home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / magazyn_amiga / 3 / ami040a_kurs_amosa.ram < prev    next >
Text File  |  1997-09-14  |  2KB  |  71 lines

  1.  
  2.  
  3. <sr>Tablice zmiennej dîugoôci
  4.  
  5. <txt>Chyba jednâ z najwiëkszych bolâczek AMOS-a jest to, ûe nie
  6. moûna zmieniaê rozmiaru raz zadeklarowanej tablicy. Czy jest
  7. jakieô rozwiâzanie tego problemu?
  8.  
  9. Elementy tablicy moûna trzymaê w banku AMOS-a (zamiast w
  10. tablicy). Przypuôêmy, ûe chcemy tam wrzucaê liczby caîkowite.
  11. Wobec tego bank rozmiaru >N*4< bajtów, bëdzie zawieraî >N< paczek
  12. danych po 4 bajty (cztery bajty = dîugie sîowo = liczba
  13. caîkowita). Te wiadomoôci chyba wystarczâ, ûeby oprogramowaê
  14. kilka procedur, umoûliwiajâcych wydobywanie i wstawianie
  15. elementów na pozycjë >I< takiego banku. Oto nagîówki tych
  16. procedur:
  17.  
  18. <l>
  19. Procedure BANK_INIT[BANK,N]
  20.  
  21.   ' inicjalizuje "tablicë" w banku
  22.   
  23.   ' BANK - numer banku do przechowywania danych
  24.   
  25.   ' N - liczba przechowywanych elementów
  26.   
  27.   ' (po prostu rezerwujemy bank)
  28.   
  29. Procedure BANK_KONIEC
  30.  
  31.   ' zwalnia pamiëê zajmowanâ przez bank
  32.   
  33. Procedure BANK_WSTAW[I,ELEMENT]
  34.  
  35.   ' wstawia liczbë ELEMENT na pozycjë I
  36.   
  37.   ' (wystarczy uûyê rozkazu Loke)
  38.   
  39. Procedure BANK_WEZ[I]
  40.  
  41.   ' pobiera liczbë z banku, znajdujâcâ sië
  42.   
  43.   ' na pozycji I (trzeba uûyê Leek i Param
  44.   
  45.   ' - przy wyjôciu z procedury)
  46.   
  47.  
  48. <txt>Uwaga, jeûeli zarezerwujemy bank staîy, to mamy dodatkowâ
  49. zaletë -- raz zapisane do banku dane juû nam nie zginâ, gdyû
  50. zostanâ zapisane razem z programem na dysk.
  51.  
  52. No dobrze, a gdzie zmienna dîugoôê tablicy? Aleû majâc 
  53. bank pamiëci, moûemy z nim robiê, co nam sië ûywnie podoba,
  54. czyli miëdzy innymi:
  55.  
  56. <l>
  57. Procedure BANK_ZWIEKSZ[J]
  58.  
  59.   ' zwiëksza rozmiar banku o J
  60.   
  61.   ' gdy J ujemne - zmniejsza
  62.   
  63. Procedure BANK_ROZMIAR[N]
  64.  
  65.   ' ustal rozmiar banku na N
  66.   
  67.  
  68. <txt>A teraz najwiëkszy "bajer", wszak przy wstawianiu elementów
  69. moûna dynamicznie zwiëkszaê rozmiar pamiëci na tablicë w banku.
  70. Czyû nie? Moûna teû dodaê wiëcej sztuczek, ale to juû pozostawiam
  71. do przemyôlenia Czytelnikom.